// Copyright (C) 1953-2022 NUDT
// Verilog module name - control_packet_switch 
// Version: V4.1.0.20221212
// Created:
//         by - fenglin 
////////////////////////////////////////////////////////////////////////////
// Description:
//          
///////////////////////////////////////////////////////////////////////////

`timescale 1ns/1ps

module control_packet_switch
(
        i_clk           ,   
        i_rst_n         ,
        
        iv_data_0       ,
        i_data_wr_0     ,        
        ov_data_0       ,        
        o_data_wr_0     , 

        iv_data_1       ,
        i_data_wr_1     ,        
        ov_data_1       ,        
        o_data_wr_1     ,  

        iv_data_2       ,
        i_data_wr_2     ,        
        //ov_data_2       ,        
        //o_data_wr_2     ,

        iv_data_3       ,
        i_data_wr_3     ,        
        //ov_data_3       ,        
        //o_data_wr_3     ,

        iv_data_4       ,
        i_data_wr_4     ,        
        ov_data_4       ,        
        o_data_wr_4               
);

// I/O
// clk & rst
input                   i_clk        ;
input                   i_rst_n      ;
// 
input       [8:0]       iv_data_0    ;
input                   i_data_wr_0  ;
output      [8:0]       ov_data_0    ;
output                  o_data_wr_0  ;
// 
input       [8:0]       iv_data_1    ;
input                   i_data_wr_1  ;
output      [8:0]       ov_data_1    ;
output                  o_data_wr_1  ;
// 
input       [8:0]       iv_data_2    ;
input                   i_data_wr_2  ;
//output      [8:0]       ov_data_2    ;
//output                  o_data_wr_2  ; 
// 
input       [8:0]       iv_data_3    ;
input                   i_data_wr_3  ;
//output      [8:0]       ov_data_3    ;
//output                  o_data_wr_3  ; 
// 
input       [8:0]       iv_data_4    ;
input                   i_data_wr_4  ;
output      [8:0]       ov_data_4    ;
output                  o_data_wr_4  ;     
control_packet_dispatch control_packet_dispatch_inst
(
    .i_clk      (i_clk        ),
    .i_rst_n    (i_rst_n      ),
                         
    .iv_data    (iv_data_4    ),
	.i_data_wr  (i_data_wr_4  ),
                         
	.ov_data_0  (ov_data_0    ),
	.o_data_wr_0(o_data_wr_0  ),
                              
	.ov_data_1  (ov_data_1    ),
	.o_data_wr_1(o_data_wr_1  )      
);

mux_5to1 control_packet_select_inst
(
        .i_clk                       (i_clk                   ),
        .i_rst_n                     (i_rst_n                 ),
                                      
        .iv_data_1                 (iv_data_0               ),
	    .i_data_wr_1               (i_data_wr_0             ),
                                      
        .iv_data_2                 (iv_data_1               ),
        .i_data_wr_2               (i_data_wr_1             ),
                                      
        .iv_data_3                 (iv_data_2               ),
        .i_data_wr_3               (i_data_wr_2             ),
                                      
        .iv_data_4                 (iv_data_3               ),
        .i_data_wr_4               (i_data_wr_3             ),
        
        .iv_data_5                 (9'b0                    ),
        .i_data_wr_5               (1'b0                    ),        
                                      
        .ov_data                     (ov_data_4               ),
        .o_data_wr                   (o_data_wr_4             ),
                                      
        .ov_discard_pkt_cnt_fop_1  (),
        .ov_cut_pkt_cnt_fop_1      (),
        .ov_discard_pkt_cnt_fop_2  (),
        .ov_cut_pkt_cnt_fop_2      (),
        .ov_discard_pkt_cnt_fop_3  (),
        .ov_cut_pkt_cnt_fop_3      (),
        .ov_discard_pkt_cnt_fop_4  (),
        .ov_cut_pkt_cnt_fop_4      (),
        .ov_discard_pkt_cnt_fop_5  (),
        .ov_cut_pkt_cnt_fop_5      ()        
    
); 
endmodule